﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>分割字符串 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 分割字符串 function separates a 字符串 into an 数组 of substrings using the specified delimiters." />
<meta name="ahk:equiv-v1" content="commands/StringSplit.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>分割字符串</h1>

<p>使用指定的分隔符将字符串分成子字符串<a href="../Objects.htm#Usage_Simple_Arrays">数组</a>.</p>

<pre class="Syntax">数组 := <span class="func">分割字符串</span>(字符串 <span class="optional">, Delimiters, OmitChars, MaxParts := -1</span>)</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>字符串</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>要分割的字符串.</p>
  </dd>

  <dt>Delimiters</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果此参数为空或省略, 那么将把输入字符串中的每个字符解析为单独的子字符串.</p>
    <p>否则, <em>Delimiters</em> 可以是单个字符串, 也可以是字符串数组, 每个分隔符用于确定子字符串之间的边界出现的位置. 由于分隔符不被视为子字符串本身的一部分, 因此它们决不会包含在返回的数组中. 同样, 如果输入字符串中的一对定界符之间没有任何内容, 则对应的数组元素将为空.</p>
    <p>例如: <code>&quot;,&quot;</code> 将根据逗号每次出现的位置分割字符串. 同样地, 使用 <code>[内_跳格, 内_空格]</code> 作为分隔符将在输入字符串中每次遇到空格或制表符时创建一个新的数组元素.</p>
  </dd>

  <dt>OmitChars</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>可选的字符列表(区分大小写), 用来从每个数组元素的开始和结尾部分移除这些字符. 例如, 如果 <em>OmitChars</em> 是 <code>&quot; `t&quot;</code>, 那么每个元素中开始和结尾部分(但中间的不会) 的空格和制表符会被移除.</p>
    <p>如果 <em>Delimiters</em> 为空, 那么 <em>OmitChars</em> 表示需要从数组中排除的那些字符.</p>
  </dd>
  
  <dt>MaxParts</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>返回的子字符串的最大数目. 如果非零, 则字符串最多被分割 <em>MaxParts</em>-1 次, 并且在最后一个子字符串中返回字符串的其余部分(不包括任何前导或尾随的 <em>OmitChars</em>). 如果省略或 -1, 则没有限制.</p>
  </dd>

</dl>

<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#objects">数组</a></p>
<p>函数返回一个包含指定字符串的子字符串的数组.</p>

<h2 id="Remarks">备注</h2>
<p>除非空格和制表符之类的空白字符包含在 <em>Delimiters</em> 或 <em>OmitChars</em> 参数中, 否则它们将被保留. 可以使用 <a href="Trim.htm">修剪</a> 从任何变量的两端移除制表符和空格. 例如: <code>变量 := 修剪(Var)</code></p>
<p>要拆分标准 CSV(逗号分隔值) 格式的字符串, 请使用<a href="LoopParse.htm">解析循环</a>, 因为它具有内置 CSV 处理功能.</p>
<p>要在分割前按不同的顺序排列字段, 请使用 <a href="Sort.htm">排序</a> 函数.</p>
<p>如果您不需要把子字符串长时间的存储到内存中, 建议使用<a href="LoopParse.htm">解析循环</a> -- 尤其在 InputVar 非常大时可以节约大量内存. 例如:</p>
<pre>Colors := "red,green,blue"
循环转换, Colors, ","
    信息框 "Color number " 内_循环次数 " is " 内_循环属性</pre>
<h2 id="Related">相关</h2>
<p><a href="LoopParse.htm">Parsing 循环</a>, <a href="../misc/Arrays.htm">Arrays</a>, <a href="Sort.htm">排序</a>, <a href="SplitPath.htm">分割路径</a>, <a href="InStr.htm">查找</a>, <a href="SubStr.htm">截取字符串</a>, <a href="StrLen.htm">字符串长度</a>, <a href="StrLower.htm">字符串小写</a>, <a href="StrLower.htm">字符串大写</a>, <a href="StrReplace.htm">字符串替换</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>TestString := "This is a test."
word_array := 分割字符串(TestString, 内_空格, ".")  <em>; 忽略句点.</em>
信息框("The 4th word is " word_array[4])</pre>
</div>

<div class="ex" id="ExForLoop">
<p><a href="#ExForLoop">#2</a></p>
<pre>Colors := "red,green,blue"
ColorArray := 分割字符串(Colors, ",")
循环 ColorArray.Length()
{
    this_color := ColorArray[内_循环次数]
    信息框 "Color number " 内_循环次数 " is " this_color
}</pre>
</div>

</body>
</html>